23

» WarCraft 3 / Кнопки постройки

Похожие вопросы:

ответ
Ухаха. Парень, ознакомься, что такое утечки, прикрепление в помощь.
ответ
На ГУИ это делается без всякого custom script, ищешь раздел Игра и там Force UI Key.
Вообще, в ГУИ же поиск текста есть. Мог бы сам найти.
ответ
Можно дать юниту какую-нить абилку и все время через Force UI Key заставлять игрока ее нажимать пока этот юнит выбран
И как только он эту абилку использует, значит меню закрыто

23

» WarCraft 3 / Как узнать тип урона

Похожие вопросы:

ответ
Вот этой системой можно
Ещё у Бородача есть система безорбового отлова урона магический/физический. Но она не ловит тип атаки.
Больше известных мне систем распознавания типа урона нема
ответ
GF RaiseD:
Может, будет полезно: раз, два. Таблицы именно по отдельным скиллам не видел никогда, но этой инфы должно хватить чтоб выяснить это самостоятельно.
ответ
Если очень сильно надо - гугли Easy damage system для разъяснений, вот тебе сама система.

23

» WarCraft 3 / Критические ошибки

Похожие вопросы:

ответ
Ledon, ну да, по сути, так и есть
ответ
это баг карты
попробуй удалить их в обычном редакторе либо через mpq
ответ
нетрогать их, бага редактора, увы почему то редактор не всегда правильно пересчитывает доступные ро коды для способностей.

23

» WarCraft 3 / Добыча ресурсов

Похожие вопросы:

ответ
Тимур, не совсем верно
можно написать кодом добычу золота а стандартные рудники снести нахер
ответ
Ну, это просто - берёшь и вспоминаешь все необычные карты. Комуниздишь. Профит.
Для инкома можно сделать зависимость от типа ландшафта. Например, чтобы добывали только на мелководье. Или если возле этого здания есть деревья. Или увеличивать инком в зависимости от кол-ва деревьев рядом. Соответственно, ддеревья можно заменить на другие здания, шахты с золотом и вообще на что угодно. Запилить риск и смотреть кол-во войск возле города.
Можно дать расе ферму, на которой игрок будет производить овец/поросят/людишек и забивать их на мясо. Ну или просто быть источником инкома, который бродит где попало.
Можно запилить фракцию варваров, которые будут добывать золото только убивая и ломая здания.
Можно сделать так, чтобы получаемый героем опыт конвертился в золото. И при покупках/постройках тратился.
ответ
GF RaiseD:
Урон по дереву можно отследить с помощью хеша и дерева с 1 хп. Каждому дереву на карте поставить в соответствие n единиц жизней. При смерти дерева проигрывать анимацию получения урона и немедленно возрождать, загружать их хеша значение хп, перезаписывать его и сохранять.
Чтоб проверить что урон нанёс именно рабочий - нужно проверять наличие юнитов определённого типа вокруг дерева с соответствующим приказом, цель которого - это дерево. Для отлова цели приказа также юзается система на всё том же хеше. Нужна бд всем абилкам лесорубов.
Насчёт золота сказать трудно. Нужно посмотреть какие есть состояния юнита и какие из них связаны с пребыванием в руднике, приказы и прочее. Подозреваю что юниты вроде рабочих альянса покидают карту когда заходят в рудник. Но это нужно тестить и костылить. Чистого способа нету.
ответ
Сделай способности добычи у работников много уровней, и при определённых условиях(здание построено, здание умирает) меняй уровень этой способности у всех рабочих на карте(ну, при создании каждого рабочего, смотри на коилчество таких зданий на карте через отряд, и устанавливай уровень способности у рабочего)
ответ
"нековыряясь в юнитах ну и для карты нужно."
Тогда только триггерно добавлять ресурсы. Еще можно "ковыряясь" через редактирование в РО способности Добывать ресурсы (создание нескольких способностей с различным значением или многоуровневой способности)

23

» WarCraft 3 / Высота модели в mdlvis

Похожие вопросы:

ответ
Модель исчезает целиком? Если да, то она просто уходит из поля зрения камеры, и модель не является битой, если хочешь видеть модель во время прыжка, сделай либо камеру выше, либо прыжок ниже.
ответ
Все, разобрался. Тема закрыта)))~ssbbssc, Не нельзя, просто сама модель очень маленькая а при увеличении ее в игре баф над головой и под моделькой (например аура) становится очень огромным, а модель вроде нормальная

23

» WarCraft 3 / Ошибка базы данных триггеров

Принятый ответ
Похожие вопросы:

ответ
Severity, нету редактора с названием "New Gen WE"
полагаю у тебя стоит jngp
тогда открываем ресурс с jngp и читаем то что выделено красным
Редактор несовместим с русификатором триггеров.
ответ
Steal nerves:
JNGP снимает ограничения (например максимум декорации 20к), если обычным редактором открыть критует. В jngp есть новые гуишные функции, которых нет в обычном, стандартный редактор их не распознает. Юзайте поиск, такой вопрос уже задавали
можно вместо новых триггерных команд юзать нативки. Писать например через Custom Script или вообще на jass

23

» WarCraft 3 / Вампиризм

Похожие вопросы:

ответ
Есть, смотри маску смерти.
ответ
Делаешь предметную абилку с уровнями, создаешь абилку-пустышку. В скиллы герою даешь пустышку. Отслеживаешь изучение пустышки и в соответствии с ее уровнем апаешь "скрытый" предметный скилл.
ответ
8gabriel8, Ну я сказал главное без наведения невидно.
ответ
XGM Bot:
Похожие вопросы:

ответ
Есть, смотри маску смерти.
ответ
Делаешь предметную абилку с уровнями, создаешь абилку-пустышку. В скиллы герою даешь пустышку. Отслеживаешь изучение пустышки и в соответствии с ее уровнем апаешь "скрытый" предметный скилл.
ответ
Вообще в мемхаке есть же.
Но новички в картостроительстве, большинство серверов и отчасти последний патч варкрафта в мемхак не понимают.
ответ
not_name:
я карту посмотрел, да, пытался сделать похожее
только там с очередью приказов шляпа выходит, поэтому я лучше сделаю все визуально

в общем, реализовал, как и говорил выше - при смерти сразу воскрешаю героя на месте гибели, пауза, анимация, таймер, по прошествии таймера - выдаю все нужное, при повторной смерти - забираю
адекватно работает с крестами
ответ
8gabriel8, Ну я сказал главное без наведения невидно.

ответ
Орбы обычно включают второй тип атаки, может у тебя был орб в инвентаре?

23

» WarCraft 3 / Призыв юнитов

Похожие вопросы:

ответ
Событие каждые 1 сек времени
пауза triggering unit
^ Не имеет смысла, здесь нет triggering unit, исправляй, сообщи об изменениях или неизменениях.
У тя там чета про убийства ещё, но спрятать юнит проиграв анимацию смерти не означает его убийство и из группы он не удаляется, если состоит. Так что имей в виду.
ответ
~16GB:
ssbbssc,
есть добавление таймера жизни триггером
ищи в разделе боевая еденица
ответ
BrEd Pitt, делать через найм юнитов или удалять призванного юнита если превышен лимит еды
а у абилки сбрасывать кд
и выдавать чтото наподобие "нужно построить зикурат"
ответ
этот приказ не имеет названия поэтому отдавать его надо по коду
код приказа 851976
bOris, функция для отдачи приказа IssueImmediateOrderById
хз есть ли подобное на гуи
ответ
Дать приказ на использование способности/производство юнита.

23

» WarCraft 3 / Приветствие

Похожие вопросы:

ответ
вариант через define native-функции, то есть ее подмена для последующего отлова как события изменения реальной переменной, не совсем подходит
Даже интересно, почему?
Как уловить момент очищения handle боевой единицы?
Как вариант - периодическая проверка координат юнита по его хендлу, стали равны 0.0 / 0.0 - юнит был удалён.
Как уловить момент удаления через функцию RemoveUnit?
Вызвать нужную функцию сразу после вызова RemoveUnit, очевидно.
ответ
Попробуй событие - входит в регион, ну и проверь что юн ит мертв.
Дефолтные способности сложно отслеживать, многие используют для работы свои методы, как к примеру руны или орбы - они хоть и кастуют спелл нл события каста нету, как и проверки приказа, кулдауна и прочего.
ответ
Steal nerves:
Сейчас не за компом. Но попробуй проверять при событий - юнит использует предмет. Проверяй сколько зарядов было. Вообще-то почти все события говорят нам не то, что случилось (произошло), а то что случится позже (обычно через 0 сек). Например, имеешь манипулирующий итем, который пропадет при нуле зарядов или станет зарядов меньше. Яркий пример, при событий юнит получает урон, там нам оповещают о уроне, который нанесут.
Проверяй кол-во зарядов у манипулирующего.
Если бы это было бы наоборот, то есть позже, нам бы тогда надо было бы проверять есть ли манипулирующий итем в инвентаре героя
ответ
Поменять тип боевой единицы в способности, не?

23

» WarCraft 3 / Увеличение карты в размерах.

Похожие вопросы:

ответ
Maniac_91, область это хэндл а значит утекает
максимального количества областей ограничивается количеством оперативной памяти (до 2 гигов вроде) и максимальным количеством хэндлов (2 в 32 степени)
больше ни чем
EnergyFrost:
Максимум что тебя ожидает- лаги, которые ты получишь из-за утечек, работая с этими областями. Так что старайся не наплодить утечек и все будет окей.
как правило работа со статичными областями не вызывает утечек (если их не копировать)
ограничений на декорации тоже нету к слову (если не юзать устаревший редактор)
ответ
8gabriel8, довольно много. Разбиение на отдельные триггеры может помочь от проблем с лимитом операций, но если в этом коде нет циклов, то оно практически бессмысленно. Ради интереса можешь попробовать сохранить карту с конвертированными триггерами, вдруг причина в модуле редактора, который за отрисовку GUI отвечает.

23

» WarCraft 3 / Утечка

Похожие вопросы:

ответ
Какой ужас
Делай вот так.
бронепоезд
создать.
направить на 128 точек наверх(90)
сделать неперманентным
текст удалится через 3 секунды
текст затухнет до 100% прозрачности через 3 секунды
Вот чёрт. не успел приплюснуть к посту.
ответ
Достаточно посмотреть как устроены эти бж функции и все будет понятно.
function OnlyAliveSourcess takes nothing returns boolean // эту функция в кастом код карты, в самом вверху.
    return GetUnitTypeId( GetFilterUnit( ) ) == 'hsor' and not ( GetWidgetLife( GetFilterUnit( ) ) < 0.405 or IsUnitType( GetFilterUnit( ), UNIT_TYPE_DEAD ) )
endfunction
//...
call GroupClear( udg_Group ) // это в кастом скрипт твоего триггера
call GroupEnumUnitsInRect( udg_Group, bj_mapInitialPlayableArea, Condition( function OnlyAliveSourcess )) // это в кастом скрипт твоего триггера
Вот без утечек и локейшинов и прочих ненужных действий.
Далее уже делай что хочешь с юнитами в группе
ответ
FrigatPlay, с этим я согласен, т.к. статья рассчитана на того кто шарит в программировании
используя только средства гуи от утечек не избавится т.к. гуи сделано из утечек
это как пытаться убрать из кирпичного дома все кирпичи

23

» WarCraft 3 / Переменные

Похожие вопросы:

ответ
Что такое "назначить пользовательский параметр юнита или предмета" и как им пользоваться?
Используется для сохранения каких-нибудь своих данных в этот конкретный предмет или юнита
Добрые люди, как присвоить глобальной переменной (целочисленной) цену определенного предмета (так чтобы если изменить цену в редакторе объектов, то в редакторе триггеров она сама изменялась) или какая главная характеристика определенного героя (разум, сила, ловкость).
Никак, только руками указывать или использовать это xgm.guru/p/fly-data
ответ
название KillUnit не совсем подходит
я бы назвал killUnitFromUnit или просто killFromUnit
Пушистый, а можно проще
define KillUnit(a) = KillUnit2(a)
по поводу правил
название должны соответствовать выполняемой функции
например если логическая переменная хранит жив юнит или нет то называться она должна isAlive или как то так
+ различные правила написания для различных языков
например в java первое слово в названии функции/переменной пишется с маленькой буквы а остальные с большой, а в названиях классов все слова с большой
в jass официальных соглашений нету но близы писали в функциях каждое слово с большой а константы большими буквами разделяя слова _
ответ
создать массив областей, каждой присвоить номер, потом рандомным числом пикать
ответ
DenisYulamanov,
Игрок ввел -тест как подстроку
Введеное собщение к примеру 1, 5 = -тест
Установить значение, как введеная строка, 7,введеная длина сообщения
ответ
Самым эффективным решением будет периодический перенос юнита-инвентаря к герою, юниту можно дать boolean флаг "isSelected"

23

» WarCraft 3 / Циклы

Похожие вопросы:

ответ
Custom script: exitwhen true
ответ
Лимит операций примерно 4 к. А у тебя тут поболее 16к.
Обойти лимит операций можно только разнеся действия в разные потоки. К примеру для через таймер.
ответ
а хотя стоп
у players_count нету начального значения
вместо
local integer players_count
local integer half_players
надо
local integer players_count = 0
local integer half_players = 0
ответ
Steal nerves:
в чем разница между ExecuteFunc и просто call
PT153, ну call просто вызываешь потоком (он не создает поток), например у тебя в ряд выставлены сверху вниз названия функции со скобочками (и внутри скобок аргументы, а если не берет никаких аргументов, то внутри скобок пусто) и через call вызывает одну за другой последовательно сверху вниз.
call название функции (аргументы)
Допустим первую верхнюю функцию вызвали, и ее обработали, потом поток берет вторую внизу функцию и обрабатывает и т.д. Но у потока есть ограничения в операциях, как только выполнится определенное количество операций, варкрафт экстренно завершает поток и даже не сообщает об этом.
call функция 1()
call функция 2()
......
call функция 999()
Тут хочу обратить внимание и на то, насколько длинный код в этой вызываемой функции. И сколько вызываемой работы потребует: всякие вычисления, бесконечные циклы и другое. Если длинный код у тебя, и кучу циклов, и сами циклы большую работу совершают, то следует разбить на участки или как-то переделать что ли, уменьшить работу цикла и др.
Можно разбить на функции и ...
  1. вызывать через call, но так делать не стоит. Поток вызывает эти функции последовательно.
  2. Нужно делать задержку (через вэйт), например в ИИ-скриптах варкрафта делают задержку, чтобы не было нагрузки. Вместо вэйта можно таймер.
  3. через ExecuteFunc, ExecuteFunc создает отдельный новый поток. информацию про ExecuteFunc скидывал выше.

23

» WarCraft 3 / Крафт предметов.

Похожие вопросы:

ответ
Если у героя полностью заполнен инвентарь, то герой не сможет подбирать предметы, и ничего с этим сделать нельзя. Исключением являются руны и книги. Сделайте два варианта каждого предмета: пустышку, на основе руны, и настоящий, который хранится в инвентаре героя и имеет реальный эффект. Нет, другого способа нету.
ответ
Grok,
FSGUI - использование специальных декораций со сменными текстурами и зон реакции на мышку (не помню уже как они называются) в совокупности с фиксированной камерой для создания полноэкранного меню с произвольным содержимым (открытие такого меню перемещает камеру в специальную локацию, что не всегда удобно т.к. не видно персонажа и им толком нельзя управлять), в том числе так делали инвентари, системы крафта, деревья навыков и много чего другого.
DGUI - развитие идеи FSGUI, только вместо декораций используются юниты со специальной моделью в совокупности с камерой, положение которой полностью управляется из кода - так можно создать иллюзию окон и кнопок прямо на месте, не перемещая камеру в специальную локацию и тем более не мешая управлению персонажем. Учитывая особенности реализации, должно быть понятно, что это работает только с видимой областью, где могут отображаться юниты и совершенно не пригодно для манипуляций с панелью.
ответ
Без протекта? Значит открывай да делай.

23

» WarCraft 3 / Замена стандартных моделей.

Похожие вопросы:

ответ
Читаем статьи, учим русский, делаем сами.
Можете попробовать обратиться суда, если вообще не получается.
ответ
ну вот в чём твоя ошибка: Ты изменил название текстуры, а значит ты изменил и пути, тебе нужно зайти в war3modelEditor и там уже открыв модель выбрать вкладку: Windows=>Texture Manager, где будет список текстур, ты удаляешь 1 старую текстуру, которая у тебя была и добавляешь новую, при этом модель с текстурой должны лежать в одной папке, которая не содержит кириллицы (например путь должен быть d:\Users\User\Desktop\moroz - без русских букв ).
Переименовать новую текстуру на старую по идее не имеет смысла, потому что опять же ты сохранил её без текстуры, а => испоганил, накосячил, сломал (называй как хочешь).

23

» WarCraft 3 / передача предмета игроку

Похожие вопросы:

ответ
Т.е. ты сначала отдаешь от героя в рюкзак, а потом сразу же забираешь из рюкзака герою? И нафига? Нет, я понял, что у тебя с логикой туго, но все равно должен спросить.
Для простоты и аналогичности: создаёшь третьего юнита, кидаешь ему шмот из рюкзака, кидаешь шмот героя в рюкзак, кидаешь из третьего юнита в героя.
ответ
ответ
Все предметы изночально принадлежать враждебным, юзайте Custom value предмета, если 0 то предмет еще никто не подобрал, значит его получили убив монстра или купили, значит ставим ему custom value с номером игрока (нумеруйте не с 0, а с 1). Легко и просто, правда?

23

» WarCraft 3 / Как использовать % ?

Похожие вопросы:

ответ
HolyMoon:
это просто целочисленное значение, которое можно использовать для хранения каких-то данных, например. В целом поле никакой роли не играет.
кэшна, самое "бесполезное" нечто в вк3

совутую загуглить, что такое индексер юнитов, для чего он и с чем его едят
ответ
карта должна быть сохранена перед этой командой, вроде
и надо будет перезапустить редактор после использования чтобы изменения вступили в силу
ответ
Altf40160:
Steal nerves:
Спасибо, но меня интересует как рас "событие - юнит применяет способность" как же заставить героя компьютера использовать скилл!?
ставишь айди приказа и в условиях проверяешь его, например если у канала стоит айди thunderbolt, то в триггерах это будет молот бурь
ответ
IGOREIK, там четыре события на применение способности.
Пробуй разные, выбери, какое подойдёт лучше.
Вариант 8gabriel8 лучше. Немного дополню. Можно найти модель спецэффекта, который применяется во время включения способности. Посмотреть редакторами моделей (War3ME, например), какой там звук используется. И прописать импортированному звуку этот путь.

23

» WarCraft 3 / Угол крена

Принятый ответ
Похожие вопросы:

ответ
Ставить -90, через SHIFT+Enter
ответ
SetUnitLookAt
вращаешь нужную кость на посмотреть выше себя по оси Z

23

» WarCraft 3 / Читы

Похожие вопросы:

ответ
D4rkof, отлавливать чит по косвенным признакам
если чит был введён то убирать действие чита с помощью повторного ввода или завершать игру
ответ
Steal nerves:
Как можно конвертировать триггер в jass в WE?
Эх... Странные вопросы задаешь. Выделяешь/выбираешь тригггер, жмешь правка - конвентировать в текст
А про последствия не понял, разве бой своего юнита с чужим не есть отслеживание последствий?
отпечатка, случайно написал не. Да это последствие. По-другому никак.
Вот самый простой вариант от неуязвимости и всемогущества whosyourdaddy, который переводится как "кто твой папочка":
  1. Создаешь юнита в РО, так сказать будет куклой для битья. Если она умрет, то значит ее убили нечестным образом.
  2. Юнита надо будет отредактировать
  3. Делаем куклу незаметной. Так сказать нужно скрыть.Удаляешь у нее модель, потом скрываешь отображение на мини-карте (характеристики - скрыть мини-карту).
  4. Если это рабочий то выключить у него классификация - работник. Иначе иконка будет отображаться в игре.
  5. Делаешь так чтобы не мог атаковать, короче полностью отключаешь атаку (бои - атаки - нет)
  6. Делаешь его неподвижным, чтобы не убегал, когда его бьют
  7. Делаем неубиваемым. Реген. Скорость восстановления здоровья на максимум - 9999к. Запас здоровья тоже повыше (примечание: здоровье не должно быть слишком большим, а то ставил 9999к читом не мог убить, даже с 5000 хп,видимо из-за регена не умирал, поставил 1000). Затем можно дать невосприимчивость от магии, так сказать защитой от магии будет.
  8. даем способность москиты, так герой становится невыделяемый
  9. и убираем обзор видимости (характеристики - радиус обзора = 0 днем и ночью)
  10. создаем двух таких на карте, одного делаем вражеским (можно за нейтрально-враждебного), а другого за игрока
  11. создаем триггер, который будет наносить урон периодически от лица игрока, наносит 1 единицу урон. другой триггер ловит смерть
ответ
Короче: если ставить юнита, который относится к игроку, но самого игрока нет... То whosyourdaddy не будет работать на всех юнитах этого игрока.
ответ
Steal nerves:
Все работает. работает с специальными переменными, типа GetFilterUnit(). Вообще это условие, если это условие (фильтр) истинно, то этого юнита (GetFilterUnit), подходящего по условию, оставляет, а остальных отсеивает. У тебя, если условие истинно, выбирает всех. Мне кажется не работает. потому что радиус слишком маленький 90 - слишком маленький, едва ли кого выделишь. Надо еще дебагом проверять (выводи на экран) и проверяй кол-во юнитов в группе. Так написал, что не понятно, что тебе нужно. И вопрос закрыт? (закрой тему)
чтобы глобалки объявлять скачай jngp, подключи jasshelper (V jass)
в самом наверху триггера можно писать
globals
integer TTT = 0 //целочисленная
endglobals

23

» WarCraft 3 / Вопрос инкома

Похожие вопросы:

ответ
хотя ладно я сейчас добрый так что лови совет
вместо игрок 1 используй владелец выбранного юнита
и вместо того чтобы сразу добавлять ресурсы заноси их в переменную
и добавляй в конце
Nosferoh, сори но то что ты сказал это не оптимально
зачем усложнять ?

23

» WarCraft 3 / Проверка включенного триггера используя триггеры

Похожие вопросы:

ответ
Если в триггере много действий, загружающих память, то лучше не использовать малый период. А если в нём ещё утечки памяти, то рано или поздно лаги сделают игру невозможной.
По сути, и таймер, и периодическое событие запускают действия в определённое время, то есть действуют одинаково. Смотри, что тебе удобнее.

23

» WarCraft 3 / 1 защиты = 1% блока

Похожие вопросы:

ответ
ClotPh, Движок знает во время завершения удара, будет промах или нет, сработает пассивка или нет, а ты нет, там не так все просто, так что триггерные аналоги изобретаем и усе.
ответ
Странное понимание механики. Не бывает универсального лучшего способа, потому и существуют разные способы для конкретных ситуаций.
А экономить байты и такты процессора, заранее пользуясь интерпретируемым скриптовым языком, это вообще моветон.
Разве массив в WarCraft III не предынициализирует 8192 ячейки памяти (по Вашей формуле, в моём случае он потребляет 8192*4=32768 байт, то есть 32Кб)? Он ведь не динамический.
Нет, он динамический. Исходный размер при создании - 1024. И расширяется на 1024 ячейки по мере доступа вплоть до максимальных 8192.